﻿/**
 * 列表
 * 有序列表/无序列表，多种列表样式
 */
(function(E, $){
var Consts = E.consts,
	Event = E.mod("Event"),
	Menu = E.mod("Menu");

E.plugin("InsertOrderedList", {
	menuType:'Menu',
	menuTitle:'更多列表样式',
	
	menu: function( Panel, self, target ){
		Menu.set( self.event, self.name );
		return 1;
	}
});

E.plugin("InsertUnorderedList", {
	menuType:'Menu',
	menuTitle:'更多列表样式',
	
	menu: function( Panel, self, target ){
		Menu.set( self.event, self.name );
		return 1;
	}
});

//添加一个有序列表选项菜单
Menu.add('InsertOrderedList', {
	title: '更多列表样式下拉菜单',
	
	check: function( cursorText, e ){
		return true;
	},
	
	getHtml: function( cursorText ){
		
		var plugins = {
				List_123 : 1,
				List_a_b: 1,
				List_A_B: 1,
				List_i_ii: 1,
				List_I_II: 1
			};
		
		return plugins;
	}
});

//添加一个无序列表选项菜单
Menu.add('InsertUnorderedList', {
	title: '更多列表样式下拉菜单',
	
	check: function( cursorText, e ){
		return true;
	},
	
	getHtml: function( cursorText ){
		
		var plugins = {
				'List_circle': 1,
				'List_disc': 1,
				'List_square': 1
			};
		
		return plugins;
	}
});

//下列是五种有序列表

E.plugin("List_123", {
	click: function( Menu, self, target ){
		listStyle( 'decimal' );
		return true;
	}
});

E.plugin("List_a_b", {
	click: function( Menu, self, target ){
		listStyle( 'lower-alpha' );
		return true;
	}
});

E.plugin("List_A_B", {
	click: function( Menu, self, target ){
		listStyle( 'upper-alpha' );
		return true;
	}
});

E.plugin("List_i_ii", {
	click: function( Menu, self, target ){
		listStyle( 'lower-roman' );
		return true;
	}
});

E.plugin("List_I_II", {
	click: function( Menu, self, target ){
		listStyle( 'upper-roman' );
		return true;
	}
});

// 三种无序列表

// ○
E.plugin("List_circle", {
	click: function( Menu, self, target ){
		listStyle( 'circle' );
		return true;
	}
});

// ●
E.plugin("List_disc", {
	click: function( Menu, self, target ){
		listStyle( 'disc' );
		return true;
	}
});

// ■
E.plugin("List_square", {
	click: function( Menu, self, target ){
		listStyle( 'square' );
		return true;
	}
});

function listStyle( styleName ){
	var dom = E.get('document'),
		els = Event.getElement(),
		cmdName = '',
		tagName = '';
	
	if( /^(circle|disc|square)$/i.test(styleName) ){
		tagName = 'ul';
		cmdName = 'InsertUnorderedList';
	}else{
		tagName = 'ol';
		cmdName = 'InsertOrderedList';
	}
	
	// 当鼠标点击了一个列表时，不需要执行命令
	if( !els[tagName] ){
		E.execCommand(cmdName);
	}
	
	E.$('ol,ul').each(function(i, el){
		var o = $(el),
			listStyleType = o.css("list-style-type"),
			style = o.attr("style");
		// 没有style属性则说明是新加的
		// el == els[tagName]说明是要更改当中鼠标处的列表对象
		if( (!style || el === els.ol || el === els.ul ) && listStyleType !== styleName ){
			o.css("list-style-type", styleName);
		}
	});
}

})(jQEditor, jQuery);